This demonstrates how to use the functions in safegraph_process_patterns_functions.R.

library(tidyverse)
library(tigris)
library(sf)
library(mapview)

Sys.setenv(CENSUS_KEY="b88495f8315f45b2d100dee9ba8f4c489a7371c2")

options(
  tigris_class = "sf",
  tigris_use_cache = TRUE
)

# Load the processing functions. This also loads the normalization functions.
source("safegraph_process_patterns_functions.R")

# SET your path here to the covid19analysis folder.
sg_path <- 'P:/SFBI/Restricted Data Library/Safegraph/covid19analysis/'

# SET your path here to the github covid folder
github_path  <- ''

The functions don’t use ca_poi.rds but you will likely want make use of it to get NAICS codes and lat/long for POIs.

poi_ca <- readRDS(paste0(sg_path,'ca_poi.rds'))

Load weekly patterns and corresponding home panel summary.

patterns_W190311 <- 
  readRDS(paste0(sg_path,'weekly-patterns/v2/main-file/2019-03-11-weekly-patterns-ca.rds'))
hps_W190311 <- 
  readRDS(paste0(sg_path,'weekly-patterns/v2/home-summary-file/2019-03-11-home-panel-summary.rds'))

Filter by geography or POI type if desired. This will speed up the processing. I’m demonstrating below how to filter by spatial join because the city field in Safegraph may not be accurate for some POIs.

sj_patterns_W190311 <-
  patterns_W190311 %>% 
  left_join(
    poi_ca %>%
      dplyr::select(
        safegraph_place_id,
        longitude,
        latitude,
        naics_code
      ), 
    by = "safegraph_place_id"
  ) %>% 
  filter(!is.na(longitude)) %>% 
  mutate(
    long = longitude,
    lat = latitude
  ) %>% 
  st_as_sf(coords = c("long","lat")) %>% 
  st_set_crs(4326) %>% 
  st_join(
    places("CA", cb=F, progress_bar=F) %>% 
      filter(NAME == "San Jose") %>% 
      st_transform(4326) %>% 
      dplyr::select(NAME),
    left=F
  )

sj_grocery_patterns_W190311 <-
  sj_patterns_W190311 %>% 
  filter(naics_code == 445110)

kable(
  head(
    sj_grocery_patterns_W190311 %>% 
      dplyr::select(
        location_name,
        street_address,
        raw_visit_counts
        ) %>% 
      arrange(desc(raw_visit_counts))
  )
)
location_name street_address raw_visit_counts geometry
Safeway 6477 Almaden Expy 384 c(-121.861449, 37.219503)
Safeway 5760 Cottle Rd 339 c(-121.802882, 37.246445)
Sprouts Farmers Market 1130 Branham Ln 321 c(-121.878189, 37.261821)
Lucky Supermarkets 565 W Capitol Expy 318 c(-121.85383, 37.276111)
Safeway 1300 W San Carlos St 317 c(-121.911924, 37.322976)
Cisco Lakeview Cafe 225 E Tasman Dr 287 c(-121.935025, 37.414563)

Now we will start using the processing functions. First, just using normBG() will expand the origins but otherwise provide normalized visit counts for the week. You can group_by(safegraph_place_id) to sum up the weekly visit counts for a POI, or you can group_by(origin_census_block_group) to sum up the weekly visit counts for origins.

sj_grocery_patterns_W190311_weekly <-
  normBG(sj_grocery_patterns_W190311,hps_W190311)

# saveRDS(sj_grocery_patterns_W190311_weekly, paste0(sg_path,"weekly-patterns/v2/sj_grocery_patterns_W190311_weekly.rds"))
# sj_patterns_W190311_daily <- readRDS(paste0(sg_path,"sj_grocery_patterns_W190311_weekly.rds"))

kable(
  sj_grocery_patterns_W190311_weekly %>%  
    arrange(desc(raw_visit_counts)) %>% 
    dplyr::select(
      location_name,
      street_address,
      origin_census_block_group,
      origin_raw_visitor_counts_high,
      origin_raw_visitor_counts_low,
      visit_counts_high,
      visit_counts_low
    ) %>% 
    .[1:37,]
)
location_name street_address origin_census_block_group origin_raw_visitor_counts_high origin_raw_visitor_counts_low visit_counts_high visit_counts_low
Safeway 6477 Almaden Expy 060855119051 24 24 561.50487 561.50487
Safeway 6477 Almaden Expy 060855119093 21 21 440.18876 440.18876
Safeway 6477 Almaden Expy 060855119072 20 20 619.54938 619.54938
Safeway 6477 Almaden Expy 060855119092 18 18 368.30534 368.30534
Safeway 6477 Almaden Expy 060855119121 17 17 330.08034 330.08034
Safeway 6477 Almaden Expy 060855119122 15 15 449.70100 449.70100
Safeway 6477 Almaden Expy 060855119113 13 13 265.52646 265.52646
Safeway 6477 Almaden Expy 060855119112 11 11 257.79550 257.79550
Safeway 6477 Almaden Expy 060855119103 10 10 249.88451 249.88451
Safeway 6477 Almaden Expy 060855119071 10 10 234.20204 234.20204
Safeway 6477 Almaden Expy 060855119143 10 10 220.91425 220.91425
Safeway 6477 Almaden Expy 060855119102 9 9 153.73839 153.73839
Safeway 6477 Almaden Expy 060855119091 9 9 240.55959 240.55959
Safeway 6477 Almaden Expy 060855119123 9 9 210.93045 210.93045
Safeway 6477 Almaden Expy 060855119141 7 7 169.06276 169.06276
Safeway 6477 Almaden Expy 060855119111 6 6 177.21293 177.21293
Safeway 6477 Almaden Expy 060855119101 6 6 141.97835 141.97835
Safeway 6477 Almaden Expy 060855119131 4 2 107.95463 53.97732
Safeway 6477 Almaden Expy 060855067021 4 2 124.87060 62.43530
Safeway 6477 Almaden Expy 060855030032 4 2 174.19359 87.09680
Safeway 6477 Almaden Expy 060855061021 4 2 114.52448 57.26224
Safeway 6477 Almaden Expy 060552003022 4 2 139.91687 69.95843
Safeway 6477 Almaden Expy 060855119132 4 2 157.28144 78.64072
Safeway 6477 Almaden Expy 060855029092 4 2 74.20958 37.10479
Safeway 6477 Almaden Expy 060855011023 4 2 42.45886 21.22943
Safeway 6477 Almaden Expy 060855035061 4 2 115.29726 57.64863
Safeway 6477 Almaden Expy 060372765002 4 2 86.29815 43.14907
Safeway 6477 Almaden Expy 060855067023 4 2 129.82007 64.91003
Safeway 6477 Almaden Expy 060855123073 4 2 166.16978 83.08489
Safeway 6477 Almaden Expy 060855029072 4 2 107.52300 53.76150
Safeway 6477 Almaden Expy 060855120371 4 2 113.50124 56.75062
Safeway 6477 Almaden Expy 060855120301 4 2 67.94267 33.97133
Safeway 6477 Almaden Expy 060855018001 4 2 152.52270 76.26135
Safeway 6477 Almaden Expy 060855023011 4 2 126.21927 63.10963
Safeway 6477 Almaden Expy 060855122002 4 2 81.81036 40.90518
Safeway 6477 Almaden Expy 060855119133 4 2 92.99528 46.49764
Safeway 6477 Almaden Expy NA 10 48 256.72706 1232.28987

Above we only show one Safeway as an example. Note that where previously there was just 1 row, now there are 37, for 36 recorded origins + 1 row for remaining unrecorded origins. The overall difference between upper and lower bound estimates is ~7500 vs 7400.

grocery_visits_cbg <-
  sj_grocery_patterns_W190311_weekly %>% 
    group_by(origin_census_block_group) %>% 
    summarize(visit_counts_high = sum(visit_counts_high)) %>% 
    left_join(
      block_groups("CA","Santa Clara", cb=F,progress_bar=F) %>% 
        dplyr::select(origin_census_block_group = GEOID)
    ) %>% 
    st_as_sf() %>% 
  filter(!is.na(origin_census_block_group))

mapview(
  grocery_visits_cbg,
  zcol = "visit_counts_high",
  layer.name = "Week of<br>3/11/19<br>Grocery<br>Visits"
)

Next, getting daily visits.

sj_grocery_patterns_W190311_daily <-
  process_patterns_daily(sj_grocery_patterns_W190311,hps_W190311)

sj_grocery_patterns_W190311_daily <-
  sj_grocery_patterns_W190311_daily %>% 
  left_join(
    sj_patterns_W190311 %>% 
      as.data.frame() %>% 
      dplyr::select(
        safegraph_place_id,
        location_name,
        street_address,
        naics_code
      )
  )

kable(
  sj_grocery_patterns_W190311_daily %>% 
    arrange(desc(raw_visit_counts),date) %>% 
    dplyr::select(
      location_name,
      street_address,
      date,
      daily_visits,
      visit_counts_high,
      visit_counts_low
    ) %>% 
    .[1:7,]
)
location_name street_address date daily_visits visit_counts_high visit_counts_low
Safeway 6477 Almaden Expy 2019-03-11 59 1155.9347 1138.6969
Safeway 6477 Almaden Expy 2019-03-12 45 881.6451 868.4976
Safeway 6477 Almaden Expy 2019-03-13 53 1038.3820 1022.8972
Safeway 6477 Almaden Expy 2019-03-14 40 783.6846 771.9979
Safeway 6477 Almaden Expy 2019-03-15 55 1077.5663 1061.4971
Safeway 6477 Almaden Expy 2019-03-16 62 1214.7111 1196.5967
Safeway 6477 Almaden Expy 2019-03-17 70 1371.4480 1350.9963

The same Safeway example is shown, now with 7 rows for each day of the week. The sum of visit_counts_high is the same as the previous example, ~7500.

ggplot(
  data = sj_grocery_patterns_W190311_daily %>% 
    group_by(date) %>% 
    summarize(
      visit_counts_high = sum(visit_counts_high),
      visit_counts_low = sum(visit_counts_low)
    )
) +
  geom_line(
    aes(
      x = date,
      y = visit_counts_high
    )
  ) +
  geom_line(
    aes(
      x = date,
      y = visit_counts_low
    )
  )

The two lines shown are the upper and lower bound estimates.

Next, get daily visits but keep broken out by origin census block group.

sj_grocery_patterns_W190311_origins_daily <-
  process_patterns_origins_daily(sj_grocery_patterns_W190311,hps_W190311)

sj_grocery_patterns_W190311_origins_daily <-
  sj_grocery_patterns_W190311_origins_daily %>% 
  left_join(
    sj_patterns_W190311 %>% 
      as.data.frame() %>% 
      dplyr::select(
        safegraph_place_id,
        location_name,
        street_address,
        naics_code
      )
  )

kable(
  sj_grocery_patterns_W190311_origins_daily %>% 
    filter(safegraph_place_id=="sg:eb3e2bd534b54f2aad866707917607a9") %>% 
    dplyr::select(
      location_name,
      street_address,
      origin_census_block_group,
      date,
      daily_visits,
      visit_counts_high,
      visit_counts_low
    ) %>% 
    .[1:70,]
)
location_name street_address origin_census_block_group date daily_visits visit_counts_high visit_counts_low
Safeway 6477 Almaden Expy 060855119051 2019-03-11 59 86.27288 86.27288
Safeway 6477 Almaden Expy 060855119051 2019-03-12 45 65.80135 65.80135
Safeway 6477 Almaden Expy 060855119051 2019-03-13 53 77.49937 77.49937
Safeway 6477 Almaden Expy 060855119051 2019-03-14 40 58.49009 58.49009
Safeway 6477 Almaden Expy 060855119051 2019-03-15 55 80.42387 80.42387
Safeway 6477 Almaden Expy 060855119051 2019-03-16 62 90.65964 90.65964
Safeway 6477 Almaden Expy 060855119051 2019-03-17 70 102.35766 102.35766
Safeway 6477 Almaden Expy 060855119093 2019-03-11 59 67.63317 67.63317
Safeway 6477 Almaden Expy 060855119093 2019-03-12 45 51.58462 51.58462
Safeway 6477 Almaden Expy 060855119093 2019-03-13 53 60.75522 60.75522
Safeway 6477 Almaden Expy 060855119093 2019-03-14 40 45.85300 45.85300
Safeway 6477 Almaden Expy 060855119093 2019-03-15 55 63.04787 63.04787
Safeway 6477 Almaden Expy 060855119093 2019-03-16 62 71.07214 71.07214
Safeway 6477 Almaden Expy 060855119093 2019-03-17 70 80.24274 80.24274
Safeway 6477 Almaden Expy 060855119072 2019-03-11 59 95.19118 95.19118
Safeway 6477 Almaden Expy 060855119072 2019-03-12 45 72.60344 72.60344
Safeway 6477 Almaden Expy 060855119072 2019-03-13 53 85.51072 85.51072
Safeway 6477 Almaden Expy 060855119072 2019-03-14 40 64.53639 64.53639
Safeway 6477 Almaden Expy 060855119072 2019-03-15 55 88.73754 88.73754
Safeway 6477 Almaden Expy 060855119072 2019-03-16 62 100.03141 100.03141
Safeway 6477 Almaden Expy 060855119072 2019-03-17 70 112.93869 112.93869
Safeway 6477 Almaden Expy 060855119092 2019-03-11 59 56.58858 56.58858
Safeway 6477 Almaden Expy 060855119092 2019-03-12 45 43.16078 43.16078
Safeway 6477 Almaden Expy 060855119092 2019-03-13 53 50.83381 50.83381
Safeway 6477 Almaden Expy 060855119092 2019-03-14 40 38.36514 38.36514
Safeway 6477 Almaden Expy 060855119092 2019-03-15 55 52.75207 52.75207
Safeway 6477 Almaden Expy 060855119092 2019-03-16 62 59.46597 59.46597
Safeway 6477 Almaden Expy 060855119092 2019-03-17 70 67.13899 67.13899
Safeway 6477 Almaden Expy 060855119121 2019-03-11 59 50.71547 50.71547
Safeway 6477 Almaden Expy 060855119121 2019-03-12 45 38.68129 38.68129
Safeway 6477 Almaden Expy 060855119121 2019-03-13 53 45.55796 45.55796
Safeway 6477 Almaden Expy 060855119121 2019-03-14 40 34.38337 34.38337
Safeway 6477 Almaden Expy 060855119121 2019-03-15 55 47.27713 47.27713
Safeway 6477 Almaden Expy 060855119121 2019-03-16 62 53.29422 53.29422
Safeway 6477 Almaden Expy 060855119121 2019-03-17 70 60.17090 60.17090
Safeway 6477 Almaden Expy 060855119122 2019-03-11 59 69.09468 69.09468
Safeway 6477 Almaden Expy 060855119122 2019-03-12 45 52.69934 52.69934
Safeway 6477 Almaden Expy 060855119122 2019-03-13 53 62.06811 62.06811
Safeway 6477 Almaden Expy 060855119122 2019-03-14 40 46.84385 46.84385
Safeway 6477 Almaden Expy 060855119122 2019-03-15 55 64.41030 64.41030
Safeway 6477 Almaden Expy 060855119122 2019-03-16 62 72.60797 72.60797
Safeway 6477 Almaden Expy 060855119122 2019-03-17 70 81.97674 81.97674
Safeway 6477 Almaden Expy 060855119113 2019-03-11 59 40.79703 40.79703
Safeway 6477 Almaden Expy 060855119113 2019-03-12 45 31.11638 31.11638
Safeway 6477 Almaden Expy 060855119113 2019-03-13 53 36.64818 36.64818
Safeway 6477 Almaden Expy 060855119113 2019-03-14 40 27.65901 27.65901
Safeway 6477 Almaden Expy 060855119113 2019-03-15 55 38.03113 38.03113
Safeway 6477 Almaden Expy 060855119113 2019-03-16 62 42.87146 42.87146
Safeway 6477 Almaden Expy 060855119113 2019-03-17 70 48.40326 48.40326
Safeway 6477 Almaden Expy 060855119112 2019-03-11 59 39.60920 39.60920
Safeway 6477 Almaden Expy 060855119112 2019-03-12 45 30.21041 30.21041
Safeway 6477 Almaden Expy 060855119112 2019-03-13 53 35.58115 35.58115
Safeway 6477 Almaden Expy 060855119112 2019-03-14 40 26.85370 26.85370
Safeway 6477 Almaden Expy 060855119112 2019-03-15 55 36.92383 36.92383
Safeway 6477 Almaden Expy 060855119112 2019-03-16 62 41.62323 41.62323
Safeway 6477 Almaden Expy 060855119112 2019-03-17 70 46.99397 46.99397
Safeway 6477 Almaden Expy 060855119103 2019-03-11 59 38.39371 38.39371
Safeway 6477 Almaden Expy 060855119103 2019-03-12 45 29.28334 29.28334
Safeway 6477 Almaden Expy 060855119103 2019-03-13 53 34.48927 34.48927
Safeway 6477 Almaden Expy 060855119103 2019-03-14 40 26.02964 26.02964
Safeway 6477 Almaden Expy 060855119103 2019-03-15 55 35.79075 35.79075
Safeway 6477 Almaden Expy 060855119103 2019-03-16 62 40.34594 40.34594
Safeway 6477 Almaden Expy 060855119103 2019-03-17 70 45.55186 45.55186
Safeway 6477 Almaden Expy 060855119071 2019-03-11 59 35.98417 35.98417
Safeway 6477 Almaden Expy 060855119071 2019-03-12 45 27.44555 27.44555
Safeway 6477 Almaden Expy 060855119071 2019-03-13 53 32.32476 32.32476
Safeway 6477 Almaden Expy 060855119071 2019-03-14 40 24.39605 24.39605
Safeway 6477 Almaden Expy 060855119071 2019-03-15 55 33.54456 33.54456
Safeway 6477 Almaden Expy 060855119071 2019-03-16 62 37.81387 37.81387
Safeway 6477 Almaden Expy 060855119071 2019-03-17 70 42.69308 42.69308

Above I only show results for the Safeway example’s first 10 recorded origins. There are 37*7 total rows for the one Safeway. None of these first 10 happen to have different results for upper/lower bound because they didn’t have “4” raw_visitor_counts.

Next, hourly:

sj_grocery_patterns_W190311_hourly <-
  process_patterns_hourly(sj_grocery_patterns_W190311,hps_W190311)

sj_grocery_patterns_W190311_hourly <-
  sj_grocery_patterns_W190311_hourly %>% 
  left_join(
    sj_patterns_W190311 %>% 
      as.data.frame() %>% 
      dplyr::select(
        safegraph_place_id,
        location_name,
        street_address,
        naics_code
      )
  )

kable(
  sj_grocery_patterns_W190311_hourly %>% 
    arrange(desc(raw_visit_counts),date,hour) %>% 
    dplyr::select(
      location_name,
      street_address,
      date,
      hour,
      hourly_visits,
      visit_counts_hourly_high,
      visit_counts_hourly_low
    ) %>% 
    .[1:168,]
)
location_name street_address date hour hourly_visits visit_counts_hourly_high visit_counts_hourly_low
Safeway 6477 Almaden Expy 2019-03-11 1 1 19.59211 19.29995
Safeway 6477 Almaden Expy 2019-03-11 2 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-11 3 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-11 4 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-11 5 1 19.59211 19.29995
Safeway 6477 Almaden Expy 2019-03-11 6 2 39.18423 38.59989
Safeway 6477 Almaden Expy 2019-03-11 7 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-11 8 3 58.77634 57.89984
Safeway 6477 Almaden Expy 2019-03-11 9 2 39.18423 38.59989
Safeway 6477 Almaden Expy 2019-03-11 10 3 58.77634 57.89984
Safeway 6477 Almaden Expy 2019-03-11 11 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-11 12 5 97.96057 96.49974
Safeway 6477 Almaden Expy 2019-03-11 13 6 117.55268 115.79968
Safeway 6477 Almaden Expy 2019-03-11 14 4 78.36846 77.19979
Safeway 6477 Almaden Expy 2019-03-11 15 4 78.36846 77.19979
Safeway 6477 Almaden Expy 2019-03-11 16 5 97.96057 96.49974
Safeway 6477 Almaden Expy 2019-03-11 17 5 97.96057 96.49974
Safeway 6477 Almaden Expy 2019-03-11 18 5 97.96057 96.49974
Safeway 6477 Almaden Expy 2019-03-11 19 5 97.96057 96.49974
Safeway 6477 Almaden Expy 2019-03-11 20 5 97.96057 96.49974
Safeway 6477 Almaden Expy 2019-03-11 21 3 58.77634 57.89984
Safeway 6477 Almaden Expy 2019-03-11 22 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-11 23 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-11 24 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-12 1 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-12 2 1 19.59211 19.29995
Safeway 6477 Almaden Expy 2019-03-12 3 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-12 4 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-12 5 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-12 6 1 19.59211 19.29995
Safeway 6477 Almaden Expy 2019-03-12 7 1 19.59211 19.29995
Safeway 6477 Almaden Expy 2019-03-12 8 1 19.59211 19.29995
Safeway 6477 Almaden Expy 2019-03-12 9 3 58.77634 57.89984
Safeway 6477 Almaden Expy 2019-03-12 10 1 19.59211 19.29995
Safeway 6477 Almaden Expy 2019-03-12 11 1 19.59211 19.29995
Safeway 6477 Almaden Expy 2019-03-12 12 3 58.77634 57.89984
Safeway 6477 Almaden Expy 2019-03-12 13 1 19.59211 19.29995
Safeway 6477 Almaden Expy 2019-03-12 14 2 39.18423 38.59989
Safeway 6477 Almaden Expy 2019-03-12 15 1 19.59211 19.29995
Safeway 6477 Almaden Expy 2019-03-12 16 4 78.36846 77.19979
Safeway 6477 Almaden Expy 2019-03-12 17 4 78.36846 77.19979
Safeway 6477 Almaden Expy 2019-03-12 18 10 195.92114 192.99947
Safeway 6477 Almaden Expy 2019-03-12 19 5 97.96057 96.49974
Safeway 6477 Almaden Expy 2019-03-12 20 3 58.77634 57.89984
Safeway 6477 Almaden Expy 2019-03-12 21 3 58.77634 57.89984
Safeway 6477 Almaden Expy 2019-03-12 22 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-12 23 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-12 24 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-13 1 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-13 2 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-13 3 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-13 4 2 39.18423 38.59989
Safeway 6477 Almaden Expy 2019-03-13 5 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-13 6 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-13 7 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-13 8 1 19.59211 19.29995
Safeway 6477 Almaden Expy 2019-03-13 9 3 58.77634 57.89984
Safeway 6477 Almaden Expy 2019-03-13 10 3 58.77634 57.89984
Safeway 6477 Almaden Expy 2019-03-13 11 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-13 12 3 58.77634 57.89984
Safeway 6477 Almaden Expy 2019-03-13 13 1 19.59211 19.29995
Safeway 6477 Almaden Expy 2019-03-13 14 3 58.77634 57.89984
Safeway 6477 Almaden Expy 2019-03-13 15 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-13 16 4 78.36846 77.19979
Safeway 6477 Almaden Expy 2019-03-13 17 5 97.96057 96.49974
Safeway 6477 Almaden Expy 2019-03-13 18 7 137.14480 135.09963
Safeway 6477 Almaden Expy 2019-03-13 19 8 156.73691 154.39958
Safeway 6477 Almaden Expy 2019-03-13 20 5 97.96057 96.49974
Safeway 6477 Almaden Expy 2019-03-13 21 5 97.96057 96.49974
Safeway 6477 Almaden Expy 2019-03-13 22 1 19.59211 19.29995
Safeway 6477 Almaden Expy 2019-03-13 23 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-13 24 2 39.18423 38.59989
Safeway 6477 Almaden Expy 2019-03-14 1 2 39.18423 38.59989
Safeway 6477 Almaden Expy 2019-03-14 2 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-14 3 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-14 4 1 19.59211 19.29995
Safeway 6477 Almaden Expy 2019-03-14 5 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-14 6 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-14 7 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-14 8 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-14 9 1 19.59211 19.29995
Safeway 6477 Almaden Expy 2019-03-14 10 3 58.77634 57.89984
Safeway 6477 Almaden Expy 2019-03-14 11 3 58.77634 57.89984
Safeway 6477 Almaden Expy 2019-03-14 12 2 39.18423 38.59989
Safeway 6477 Almaden Expy 2019-03-14 13 4 78.36846 77.19979
Safeway 6477 Almaden Expy 2019-03-14 14 3 58.77634 57.89984
Safeway 6477 Almaden Expy 2019-03-14 15 1 19.59211 19.29995
Safeway 6477 Almaden Expy 2019-03-14 16 4 78.36846 77.19979
Safeway 6477 Almaden Expy 2019-03-14 17 2 39.18423 38.59989
Safeway 6477 Almaden Expy 2019-03-14 18 3 58.77634 57.89984
Safeway 6477 Almaden Expy 2019-03-14 19 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-14 20 4 78.36846 77.19979
Safeway 6477 Almaden Expy 2019-03-14 21 3 58.77634 57.89984
Safeway 6477 Almaden Expy 2019-03-14 22 2 39.18423 38.59989
Safeway 6477 Almaden Expy 2019-03-14 23 2 39.18423 38.59989
Safeway 6477 Almaden Expy 2019-03-14 24 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-15 1 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-15 2 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-15 3 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-15 4 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-15 5 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-15 6 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-15 7 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-15 8 3 58.77634 57.89984
Safeway 6477 Almaden Expy 2019-03-15 9 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-15 10 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-15 11 5 97.96057 96.49974
Safeway 6477 Almaden Expy 2019-03-15 12 1 19.59211 19.29995
Safeway 6477 Almaden Expy 2019-03-15 13 4 78.36846 77.19979
Safeway 6477 Almaden Expy 2019-03-15 14 1 19.59211 19.29995
Safeway 6477 Almaden Expy 2019-03-15 15 6 117.55268 115.79968
Safeway 6477 Almaden Expy 2019-03-15 16 6 117.55268 115.79968
Safeway 6477 Almaden Expy 2019-03-15 17 7 137.14480 135.09963
Safeway 6477 Almaden Expy 2019-03-15 18 7 137.14480 135.09963
Safeway 6477 Almaden Expy 2019-03-15 19 6 117.55268 115.79968
Safeway 6477 Almaden Expy 2019-03-15 20 4 78.36846 77.19979
Safeway 6477 Almaden Expy 2019-03-15 21 1 19.59211 19.29995
Safeway 6477 Almaden Expy 2019-03-15 22 1 19.59211 19.29995
Safeway 6477 Almaden Expy 2019-03-15 23 2 39.18423 38.59989
Safeway 6477 Almaden Expy 2019-03-15 24 1 19.59211 19.29995
Safeway 6477 Almaden Expy 2019-03-16 1 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-16 2 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-16 3 2 39.18423 38.59989
Safeway 6477 Almaden Expy 2019-03-16 4 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-16 5 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-16 6 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-16 7 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-16 8 3 58.77634 57.89984
Safeway 6477 Almaden Expy 2019-03-16 9 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-16 10 4 78.36846 77.19979
Safeway 6477 Almaden Expy 2019-03-16 11 1 19.59211 19.29995
Safeway 6477 Almaden Expy 2019-03-16 12 3 58.77634 57.89984
Safeway 6477 Almaden Expy 2019-03-16 13 5 97.96057 96.49974
Safeway 6477 Almaden Expy 2019-03-16 14 5 97.96057 96.49974
Safeway 6477 Almaden Expy 2019-03-16 15 5 97.96057 96.49974
Safeway 6477 Almaden Expy 2019-03-16 16 4 78.36846 77.19979
Safeway 6477 Almaden Expy 2019-03-16 17 6 117.55268 115.79968
Safeway 6477 Almaden Expy 2019-03-16 18 9 176.32903 173.69952
Safeway 6477 Almaden Expy 2019-03-16 19 4 78.36846 77.19979
Safeway 6477 Almaden Expy 2019-03-16 20 4 78.36846 77.19979
Safeway 6477 Almaden Expy 2019-03-16 21 3 58.77634 57.89984
Safeway 6477 Almaden Expy 2019-03-16 22 1 19.59211 19.29995
Safeway 6477 Almaden Expy 2019-03-16 23 1 19.59211 19.29995
Safeway 6477 Almaden Expy 2019-03-16 24 2 39.18423 38.59989
Safeway 6477 Almaden Expy 2019-03-17 1 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-17 2 1 19.59211 19.29995
Safeway 6477 Almaden Expy 2019-03-17 3 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-17 4 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-17 5 1 19.59211 19.29995
Safeway 6477 Almaden Expy 2019-03-17 6 0 0.00000 0.00000
Safeway 6477 Almaden Expy 2019-03-17 7 1 19.59211 19.29995
Safeway 6477 Almaden Expy 2019-03-17 8 1 19.59211 19.29995
Safeway 6477 Almaden Expy 2019-03-17 9 3 58.77634 57.89984
Safeway 6477 Almaden Expy 2019-03-17 10 3 58.77634 57.89984
Safeway 6477 Almaden Expy 2019-03-17 11 9 176.32903 173.69952
Safeway 6477 Almaden Expy 2019-03-17 12 4 78.36846 77.19979
Safeway 6477 Almaden Expy 2019-03-17 13 8 156.73691 154.39958
Safeway 6477 Almaden Expy 2019-03-17 14 6 117.55268 115.79968
Safeway 6477 Almaden Expy 2019-03-17 15 1 19.59211 19.29995
Safeway 6477 Almaden Expy 2019-03-17 16 6 117.55268 115.79968
Safeway 6477 Almaden Expy 2019-03-17 17 5 97.96057 96.49974
Safeway 6477 Almaden Expy 2019-03-17 18 4 78.36846 77.19979
Safeway 6477 Almaden Expy 2019-03-17 19 4 78.36846 77.19979
Safeway 6477 Almaden Expy 2019-03-17 20 4 78.36846 77.19979
Safeway 6477 Almaden Expy 2019-03-17 21 3 58.77634 57.89984
Safeway 6477 Almaden Expy 2019-03-17 22 1 19.59211 19.29995
Safeway 6477 Almaden Expy 2019-03-17 23 5 97.96057 96.49974
Safeway 6477 Almaden Expy 2019-03-17 24 0 0.00000 0.00000

Above I show all 168 rows for the Safeway, for 168 hours in a week.

ggplot()+
  geom_line(
    data = sj_grocery_patterns_W190311_hourly %>% 
      group_by(date, hour) %>% 
      summarize(visit_counts_hourly_high = sum(visit_counts_hourly_high)),
    aes(
      x = hour,
      y = visit_counts_hourly_high,
      group = date,
      color = date
    )
  )

The plot above shows the hourly profiles broken up by day of the week.

ggplot(
  data = sj_grocery_patterns_W190311_hourly %>% 
    group_by(safegraph_place_id) %>% 
    arrange(date,hour) %>% 
    mutate(
      hour_full = 1:168
    ) %>% 
    ungroup() %>% 
    group_by(hour_full) %>% 
    summarize(
      visit_counts_hourly_high = sum(visit_counts_hourly_high),
      visit_counts_hourly_low = sum(visit_counts_hourly_low)
    )
) +
  geom_line(
    aes(
      x = hour_full,
      y = visit_counts_hourly_high
    )
  ) +
  geom_line(
    aes(
      x = hour_full,
      y = visit_counts_hourly_low
    )
  )

The plot above shows the hourly time series for the whole week.